package com.quick.develop.flowable.application;

import com.quick.develop.flowable.domain.vo.rule.BpmRuleReqVO;
import com.quick.develop.flowable.domain.vo.rule.BpmRuleRespVO;
import com.quick.develop.flowable.domain.rule.BpmProcessRule;

import java.util.List;

/**
 * @author junyuan.liu
 * @description: 
 * @date 2022/5/24 14:13
 */
public interface IBpmRuleApplication {
    /**
     * @description 获取配置规则
     * @param reqVo 请求体
     * @return java.util.List<com.quick.develop.flowable.domain.rule.BpmProcessRule>
     * @author junyuan.liu
     * @date 2022/5/18 16:02
     */
    List<BpmRuleRespVO> getBpmProcessRules(BpmRuleReqVO reqVo);

    /**
     * @description  编辑流程规则
     * @param rules 请求体
     * @author junyuan.liu
     * @date 2022/5/24 16:00
     */
    void handleBpmProcessRules(List<BpmProcessRule> rules);

    /**
     * @description  获取规则  一个点只能有一个规则
     * @param modelKey 流程模型KEY
     * @param nodeCode 节点ID
     * @return com.quick.develop.flowable.domain.rule.BpmProcessRule
     * @author junyuan.liu
     * @date 2022/5/29 11:30
     */
    BpmProcessRule getTaskRule(String modelKey, String nodeCode);

    /**
     * @description  获取第一个节点的配置规则
     * @param modelKey 模型key
     * @return com.quick.develop.flowable.domain.rule.BpmProcessRule
     * @author junyuan.liu
     * @date 2022/6/6 10:25
     */
    BpmProcessRule getFirstNodeRule(String modelKey);

    /**
     * @description  获取配置规则
     * @param reqVo 请求体
     * @return com.quick.develop.flowable.domain.rule.BpmProcessRule
     * @author junyuan.liu
     * @date 2022/6/8 11:08
     */
    BpmRuleRespVO getBpmRule(BpmRuleReqVO reqVo);


    List<BpmProcessRule> getBpmProcessRules4SetUp(BpmRuleReqVO reqVo);
    List<BpmProcessRule> getBpmProcessRulesList(BpmRuleReqVO reqVo);

}
